package com.luxk.db.common;

import com.luxk.db.server.Server;
import com.luxk.db.server.ShutdownMode;
import com.luxk.db.server.StartupMode;

public interface Module {
	
	public String getName();
	public void setName(String name);
	
	public void setServer(Server server);

	public void setParent(Module module);
	public void addSubModule(Module module);
	
	public void init() throws Exception;
	public void raise(StartupMode mode) throws Exception;
	public void cancelRaise() throws Exception; 
	public void shutdown(ShutdownMode mode) throws Exception;
	
	/**
	 * 각 구현체에 대해 테스트케이스를 만들도록 강제하기 위해 정의한 메소드
	 * @param mode
	 * @throws Exception
	 */
	public void runTest(StartupMode mode) throws Exception;
}
